package _9

/*
时间复杂度：O(N)
空间复杂度：O(N)

*/

func longestPalindrome(words []string) int {
	hash := make(map[string]int)
	ans := 0
	pair := false
	for _, v := range words {
		hash[v]++
	}

	for k, v := range hash {
		b := []byte(k)
		b[0], b[1] = b[1], b[0]
		t := string(b)
		if b[0] == b[1] {
			if v&1 == 0 {
				ans += 2 * v
			} else {
				ans += 2 * (v - 1)
				pair = true
			}
		} else {
			ans += 4 * Min(v, hash[t])
			hash[k] = 0
			hash[t] = 0
		}
	}
	if pair {
		ans += 2
	}
	return ans
}

// Min 求最小值
func Min(nums ...int) int {
	// 32位整型最大小值
	result := nums[0]
	for _, num := range nums {
		if result > num {
			result = num
		}
	}
	return result
}
